//
//  User.swift
//  01-微博项目搭建
//
//  Created by Adolph on 15/5/19.
//  Copyright (c) 2015年 Adolph. All rights reserved.
//

import UIKit

class User: NSObject {
   
    //id 
    var id: Int = 0
    ///用户昵称
    var name: String?
    ///用户头像地址（中图）， 50 X 50像素
    var profile_image_url: String? {
        didSet {
            iconURL = NSURL(string: profile_image_url!)
         
        }
    }
    
    ///用户头像的 URL
    var iconURL: NSURL?
    /// 认证类型 -1：没有认证，0，认证用户，2,3,5: 企业认证，220: 草根明星（达人）
    var verified_type: Int = -1
    /// 1~6 一共6级会员
    var mbrank: Int = 0
    // 图标的计算形属性
    // 模型中的数据，都是被动，是提前准备好，随时等待外部的调用
    // 模型中无论何时，都不会主动向外界提供数据！
    // 两个图标，都使用的是`计算型`属性，本身不在对象中保存任何数据，在需要的时候，临时计算
    // 细节：UIImage(name:xxx) 建立的图像本身就会由系统缓存，模型本身就不需要在记录图像了
    var VipImage: UIImage? {
       //swift 中 switch不需要 break
        switch verified_type {
        case 0:
            return UIImage(named: "avatar_vip")
        case 2,3,5:
            return UIImage(named: "avatar_enterprise_vip")
        case 220:
             return UIImage(named: "avatar_grassroot")
        default:
             return nil
            
         }
    }
    
    var memberImage: UIImage? {
        if mbrank > 0 && mbrank < 7 {
         return UIImage(named: "common_icon_membership_level\(mbrank)")
        }
        return nil
    }
    private static let properties = ["id", "name", "profile_image_url", "verified_type", "mbrank"]
    
    // 字典转模型，init 函数中，不用写 return
    init(dict: [String: AnyObject]) {
        //实例化对象
        super.init()
        //使用 kvc 设置数值
        for key in User.properties {
            if dict[key] != nil {
             //在swift 中，如果在构造函数中使用kvc,需要先实例化当前对象 super.init()
               setValue(dict[key], forKeyPath: key)
            
            }
        
        }
        
        
    }
}
